#ifndef __STACK_H__
#define __STACK_H__

#define STACK_SIZE 100
#define STACK_EMPTY 1

typedef struct stack_OPTR //运算符
{
	char element[STACK_SIZE];
	int top;
}OPTR;

typedef struct stack_OPND //操作数
{
	int element[STACK_SIZE];
	int top;
}OPND;

//
//OPTR Operate; //运算符栈
//OPND Arithmetic; //操作数栈



void Stack_Init_OPTR(OPTR* ptr); //初始化运算符栈
void Stack_Init_OPND(OPND* ptr); //初始化操作数栈
bool JUdge_Stack_OPTR(OPTR* ptr);//判断操作符栈是否空
bool JUdge_Stack_OPND(OPND* ptr);//判断数据栈是否空
void Stack_Push_OPTR(OPTR* stack, char new_element); //操作符入栈
void Stack_Push_OPND(OPND* stack, int new_element); //数据入栈
char Stack_Pop_OPTR(OPTR* stack); //从操作符栈顶取出一个元素
int Stack_Pop_OPND(OPND* stack); //从数据栈顶取出一个元素
int getIndex(char theta); //获取theta所对应的索引
char getPriority(char theta1, char theta2);


#endif
